搜索 K
Appearance
博客正在加载中...
Appearance
互联网的通信安全,建立在 SSL/TLS 协议之上。上一篇我们讲的 HTTPS 通信,其实也是基于 SSL/TLS 协议的,本文简单介绍下 SSL 协议。
文章的重点是设计思想和运行过程,不涉及具体的实现细节。如果想了解这方面的内容,请参阅 RFC 文档。
不使用 SSL/TLS 的 HTTP 通信,就是不加密的通信。所有信息明文传播,带来了三大风险。
(1) 窃听风险(eavesdropping):第三方可以获知通信内容。
(2) 篡改风险(tampering):第三方可以修改通信内容。
(3) 冒充风险(pretending):第三方可以冒充他人身份参与通信。
SSL/TLS 协议是为了解决这三大风险而设计的,希望达到:
(1) 所有信息都是加密传播,第三方无法窃听。
(2) 具有校验机制,一旦被篡改,通信双方会立刻发现。
(3) 配备身份证书,防止身份被冒充。
互联网是开放环境,通信双方都是未知身份,这为协议的设计带来了很大的难度。而且,协议还必须能够经受所有匪夷所思的攻击,这使得 SSL/TLS 协议变得异常复杂。
互联网加密通信协议的历史,几乎与互联网一样长。
目前,应用最广泛的是 TLS 1.2,主流浏览器都已经实现了 TLS 1.2 的支持。
目前业内也有以下叫法:
SSL/TLS 协议的基本思路是采用之前我们提到的公钥加密法,也就是说,客户端先向服务器端索要公钥,然后用公钥加密信息,服务器收到密文后,用自己的私钥解密。
并且,由于公钥加密算法慢,因此通常会在每次对话中(也叫 session),客户端和服务器端都生成一个"对话密钥"(session key),用它来加密信息。由于"对话密钥"是对称加密,所以运算速度非常快,而服务器公钥只用于加密"对话密钥"本身,这样就减少了加密运算的消耗时间。
因此,SSL/TLS 协议的基本过程是这样的:
(1) 客户端向服务器端索要并验证公钥。
(2) 双方协商生成"对话密钥"。
(3) 双方采用"对话密钥"进行加密通信。
上面过程的前两步,又称为"握手阶段"(handshake)。
"握手阶段"涉及四次通信,我们一个个来看。需要注意的是,"握手阶段"的所有通信都是明文的。
